home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 15 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.8 KB  |  80 lines

  1. ║CM:MSD - PART 15
  2. ║LM21:RM70:PP66:PG60
  3. ║P#29
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ╨╒╨╙╔    ╙ET UP TO SCAN DIRECTORY FOR FILE NAME
  7.  
  8. $├┴┬┬           ├LEAR ╥┼├ [$┬9], ─╥╓├╬╘ [$4├──], ╞╔╠╘╥╦ [$4┼36], AND ╞╔╠╘╥╦+1 [$4┼37].
  9. $├┴├8           ╙ET ─╥╓╬╒═ [$54] TO ╞╔╠─╥╓+1 [$4├6─].
  10. $├┴├╞           ╙ET ─┼╠╙┼├ [$4├┼2] TO $01.
  11. $├┴─4           ├OPY ╞╔╠╘┬╠+1 [$4┼31] TO ╞╔╠╘┬╠ [$4┼30].
  12. $├┴─┴           ╥ETURN
  13.  
  14.  
  15.  
  16.        ├╧╨┘     ├OPY ONE OR MORE FILES TO ANOTHER
  17.  
  18. $├┴─┬           ╩╙╥ ╠╧╧╦╒╨ [$├366] TO LOOK UP FILE NAMES AND GET INFORMATION FROM THE DIRECTORY.
  19. $├┴─┼           ╔F ╞2├╬╘ [$┬3] < 3 THIS IS NOT A CONCATENATION OPERATION SO BRANCH TO ├╧╨10.
  20. $├┴┼4           ╔F THE DRIVES FOR THE 1'ST TWO FILES ARE DIFFERENT ╞╔╠─╥╓ [$4├67] AND ╞╔╠─╥╓+1 [4├6─] ARE DIFFERENT, OR THE DIRECTORY ENTRY POINTERS ┼╬╘╔╬─ [$4├67] AND ┼╬─╔╬─+1 [$4├68] ARE DIFFERENT OR THE DIRECTORY SECTOR NUMBERS ┼╬╘╙┼├ [$4├62] AND ┼╬╘╙┼├+1 [$4├63] ARE DIFFERENT THEN THIS IS NOT A CONCATENATE OPERATION SO BRANCH TO ├╧╨10.
  21. $├┴╞├           ╩╙╥ ├╚╦╔╬ [$├├5╞] TO GET THE FILE TYPE AND ENSURE THAT ALL FILES TO BE COPIED DO EXIST.
  22. $├┴╞╞           ╙ET ╞2╨╘╥ [$┬4] TO 1.  ╞2╨╘╥ IS USED TO INDEX EACH FILE TO BE COPIED.
  23. $├┬03           ╩╙╥ ╧╨╔╥╞╠ [$├┬84] TO OPEN THE INTERNAL READ CHANNEL, READ THE DIRECTORY, AND LOCATE THE FILE.
  24. $├┬06           ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO DETERMINE THE FILE TYPE.
  25. $├┬09           ╔F .┌ FLAG IS SET THEN THE FILE IS A '╥┼╠' FILE (CANNOT BE COPIED) SO BRANCH TO ├╧╨01.
  26. $├┬0┬           ╔F THIS IS NOT A '╨╥╟' TYPE FILE THEN BRANCH TO ├╧╨05 TO COPY THE FILE.  '╨╥╟' TYPE FILES CANNOT BE CONCATENATED SO INDICATE AN ERROR.
  27. $├┬0╞  ├╧╨01    ╙ET .┴ TO $64 (╞╔╠┼ ╘┘╨┼ ═╔╙═┴╘├╚) AND THEN ╩╙╥ ├═─┼╥╥ [$├0╞─] FROM WHICH THERE IS NO RETURN.
  28. $├┬14  ├╧╨05    ╙ET ╙┴ [$58] TO $12, THE INTERNAL WRITE CHANNEL.
  29. $├┬18           ═OVE THE INTERNAL READ CHANNEL STATUS FROM ╠╔╬╘┴┬+$11 [$4├9┬] TO THE INTERNAL WRITE CHANNEL STATUS ╠╔╬╘┴┬+$12 [$4├9├].
  30. $├┬1┼           ─EACTIVATE THE INTERNAL READ CHANNEL BY STORING $╞╞ AT ╠╔╬╘┴┬+$11 [$4├9┬].
  31. $├┬23           ╩╙╥ ┴╨╨┼╬─ [$─96┬] TO COPY THE 1'ST FILE.
  32. $├┬26           ╙ET .╪ (FILE COUNTER) TO 2 AND ╩╙╥ ├┘10 [$├┬46] TO COPY THE REMAINING FILES.
  33. $├┬2┬           ┼XIT WITH A JUMP TO ┼╬─├═─ [$├0├╞].
  34. $├┬2┼  ├╧╨10    ╩╙╥ ├┘ [├┬34] TO PERFORM THE FILE COPY.
  35. $├┬31           ┼XIT WITH A JUMP TO ┼╬─├═─ [$├0├╞].
  36.  
  37.  
  38.  
  39.        ├┘       ├OPY FILE(S) TO ANOTHER
  40.  
  41. $├┬34           ╩╙╥ ├╚╦╔╧ [$├├78] TO SEE IF THE FILE EXISTS.
  42. $├┬37           ╟ET THE DRIVE NUMBER FROM ╞╔╠─╥╓ [$4├6├], ┴╬─ IT WITH $01 TO MASK OFF THE DEFAULT BIT, AND STORE THE RESULT IN ─╥╓╬╒═ [$54].
  43. ║FP
  44. $├┬3┼           ╩╙╥ ╧╨╬╔╫╥ [$─4┼┼] TO OPEN THE INTERNAL WRITE CHANNEL.
  45. $├┬41           ╩╙╥ ┴──╞╔╠ [$─632] TO ADD THE NEW FILE TO THE DIRECTORY AND REWRITE THE DIRECTORY BLOCK.
  46. $├┬44           ╠OAD .╪ WITH THE INDEX OF THE FILE IN THE CONTROL TABLES FROM ╞1├╬╘ [$┬2].
  47.  
  48.  
  49.  
  50.        ├┘10     ├OPY FILE(S) TO ANOTHER - MAIN LOOP
  51.  
  52. $├┬46           ╙AVE .╪ (CURRENT FILE NUMBER) IN ╞2├╬╘ [$┬4].
  53. $├┬48           ╩╙╥ ╧╨╔╥╞╠ [$├┬84] TO OPEN THE INTERNAL READ CHANNEL AND READ IN THE DIRECTORY BLOCK WHICH CONTAINS THE FILE.
  54. $├┬4┬           ╙ET ╙┴ [$58] TO $11 TO USE THE INTERNAL READ CHANNEL.
  55. $├┬4╞           ╩╙╥ ╞╬─╥├╚ [$─1┴5] TO OBTAIN THE CHANNEL NUMBER FOR THIS SECONDARY ADDRESS.
  56. $├┬52           ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO SEE IF THIS IS A RELATIVE FILE.
  57. $├┬55           ╔F NOT A RELATIVE FILE THEN BRANCH TO ├┘10┴.
  58. $├┬57           ╩╙╥ ├┘┼╪╘ [$├┬──] TO SET UP TO COPY A RELATIVE FILE.
  59. $├┬5┴  ├┘10┴    ╙ET ┼╧╔╞╠╟ [$┬1] TO $08 AND JUMP TO ├┘20.
  60. $├┬61  ├┘15     ╩╙╥ ╨╔┬┘╘┼ [$─059] TO OUTPUT THE DATA BYTE.
  61. $├┬64  ├┘20     ╩╙╥ ╟╔┬┘╘ [$├┬┬┼] TO INPUT THE NEXT DATA BYTE.
  62. $├┬67           ╠OAD .┴ WITH $80 (LAST RECORD FLAG) AND PERFORM A ╩╙╥ ╘╙╘╞╠╟ [$──10] TO SEE IF THIS IS THE LAST BYTE.
  63. $├┬6├           ╔F THIS IS NOT THE LAST BYTE THEN LOOP BACK TO ├┘15 TO COPY SOME MORE.
  64. $├┬6┼           ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO SEE IF A RELATIVE FILE IS BEING COPIED.
  65. $├┬71           ╔F IT IS A RELATIVE FILE THEN BRANCH TO ├┘30.
  66. $├┬73           ╩╙╥ ╨╔┬┘╘┼ [$─059] TO OUTPUT THE LAST BYTE.
  67. $├┬76  ├┘30     ╙EE IF THERE ARE MORE FILES TO COPY.  ╠OAD .╪ WITH THE CURRENT FILE NUMBER FROM ╞2╨╘╥ [$┬4] AND INCREMENT .╪.  ╔F .╪ < ╞2├╬╘ [$┬3] THEN THERE ARE MORE FILES SO LOOP BACK TO ├┘10 TO COPY THEM.
  68. $├┬7─           ╙ET ╙┴ [$58] TO $12 (THE INTERNAL WRITE CHANNEL).
  69. $├┬81           ┼XIT WITH A JUMP TO ├╠╙├╚╬ [$─┴56] TO CLOSE THE CHANNEL AND FILE.
  70.  
  71.  
  72.  
  73.        ╧╨╔╥╞╠   ╧PEN INTERNAL READ CHANNEL AND READ DIRECTORY
  74.  
  75. $├┬84           ╠OAD .╪ WITH THE FILE POINTER ╞2╨╘╥ [$┬4] AND OBTAIN THE DRIVE NUMBER FOR THE FILE FROM      ╞╔╠─╥╓,╪ [$4├6├,╪].
  76. $├┬89           ═ASK OFF THE DEFAULT DRIVE BIT BY ┴╬─ING WITH $01 AND SAVE THE RESULT IN ─╥╓╬╒═ [$54].
  77. $├┬8─           ╙ET THE CURRENT ╘╥┴├╦ [$55] TO ─╔╥╘╥╦ [$╞┼6┬].
  78. $├┬92           ╙ET THE ╙┼├╘╧╥ [$56] TO ┼╬╘╙┼├,╪ [$4├62,╪], THE SECTOR NUMBER OF THE DIRECTORY BLOCK WHICH CONTAINS THIS FILE.
  79. $├┬97           ╩╙╥ ╧╨╬╔╥─ [$─4─┼] TO OPEN THE INTERNAL READ CHANNEL AND READ THE REQUESTED BLOCK.
  80.